package com.taijihuabao.modules.service;

import com.taijihuabao.common.commonutils.PageResult;
import com.taijihuabao.modules.model.basedto.IdDTO;
import com.taijihuabao.modules.model.checkin.dto.*;
import com.taijihuabao.modules.model.checkin.vo.CheckInListVO;
import com.taijihuabao.modules.model.checkin.vo.CheckInitVO;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;

/**
 * 考勤管理
 *
 * @author changhui.tu
 */
public interface CheckInService {

    /**
     * 列表
     *
     * @param check
     * @return
     */
    PageResult selCheckInList(CheckInListDTO check);

    /**
     * 信息
     *
     * @param idDTO
     * @return
     */
    CheckInListVO selCheckInInfo(IdDTO idDTO);

    /**
     * 初始打卡
     *
     * @param checkInitDTO
     * @return
     */
    CheckInitVO initCheck(CheckInitDTO checkInitDTO) throws ParseException;

    /**
     * 补卡日期校验
     *
     * @param checkInTimeVerifyDTO 补卡日期
     * @return
     */
    boolean checkInTimeVerify(CheckInTimeVerifyDTO checkInTimeVerifyDTO);

    /**
     * 考勤打卡
     *
     * @param checkInCrFromDTO
     * @throws ParseException
     */
    void attendanceClock(CheckInCrFromDTO checkInCrFromDTO) throws ParseException;

    /**
     * 导出数据
     *
     * @param response
     * @param checkInExportDTO
     * @throws IOException
     */
    void checkInExport(HttpServletResponse response, CheckInExportDTO checkInExportDTO) throws IOException;

    /**
     * 按月导出
     *
     * @param response
     * @throws IOException
     */
    void exportForMonth(HttpServletResponse response) throws IOException;

    /**
     * 按周导出
     *
     * @param response
     * @throws IOException
     */
    void exportForWeek(HttpServletResponse response) throws IOException;

}
